1. Technical Field
The present disclosure relates to preventing unauthorized calls to software routines and more specifically to preventing direct calls into a function without calling the instructions that should be executed beforehand in a specific order.
2. Introduction
Software programs typically include a main routine or main program which calls various subroutines or libraries. Often, the functionality of these subroutines and libraries depends on certain steps being performed beforehand. In other cases, a software developer desires to protect the functionality of these subroutines and libraries from unauthorized execution, but is unable to do so given available security approaches.
For example, a media player application includes a main program with libraries and subroutines to manage different aspects of playing media such as reading media files, managing media libraries, visualizations, audio playback libraries, equalizer controls, extracting metadata from media files, and accessing protected media files. The software developer desires to prevent unauthorized direct calls into the subroutine to access protected media files and/or any other sensitive subroutines or libraries while still allowing the media player application to use the sensitive routines and libraries as intended. The software developer can also desire to prevent direct access to the equalizer controls without first loading the audio playback libraries.
Current approaches are inadequate to address these needs in this and a myriad of similar situations.